Website powered by

Houdini Procedural Level Generation Tool inspired by Hades - First Iteration

This was my second project at BUas in Year 2. The project brief stated we had to simulate the pre-production phase for a videogame. The topic I chose to explore for the block was procedural level generation and algorithms, and the game I picked was Hades by Supergiant Games. This work was all done in Houdini.
After studying the design choices in Hades, I came up with this generator, which uses algorithm layering to achieve the procedural creation of levels. It uses either a symmetrical setup, created with a custom VEX code, or a Wave Function Collapse algorithm setup. It then takes the level through cellular automata for door fixups and adding gaps and Dijkstra Maps for pathfinding to determine if the level is actually playable or not.
This is the first iteration of this project. In the future, I am planning to expand on this project, adding extra features and fix-ups.

Final Benchmark Examples

Final Benchmark Examples

Video showcasing the tool in action in Houdini

Algorithm layering concept. How the tool works.

Algorithm layering concept. How the tool works.

Dijkstra Maps - How they determine if the level is valid or not

Dijkstra Maps - How they determine if the level is valid or not

Process example - From color coded layout to final view - Color guide 

Black - Props
Red - Path surrounding props (must be walkable)
Yellow - Walkable tiles
Blue - Floor gaps
Green - Walls/Unwalkable area
Pink - Entrance point
White - Exit point

Process example - From color coded layout to final view - Color guide

Black - Props
Red - Path surrounding props (must be walkable)
Yellow - Walkable tiles
Blue - Floor gaps
Green - Walls/Unwalkable area
Pink - Entrance point
White - Exit point

Process example - From color coded layout to final view - Pathfinding step - gradient shows distance from entrance (light) to exit (dark)

Process example - From color coded layout to final view - Pathfinding step - gradient shows distance from entrance (light) to exit (dark)

Process example - From color coded layout to final view - Final view mode

Process example - From color coded layout to final view - Final view mode

Invalid level example

Invalid level example

Invalid level pathfinding - white area is never reached, therefore the level is declared invalid

Invalid level pathfinding - white area is never reached, therefore the level is declared invalid